Create Project: springboot_relationships_onetoone_jointable (add Spring Boot Starters from the table)
Edit FIle: application.properties (specify H2 DB name & enable H2 Web Console)
Create Package: entities (inside main package)
– Create Class: Author.java (inside package entities)
– Create Class: Address.java (inside package entities)
Create Package: repositories (inside main package)
– Create Interface: AuthorRepository.java (inside package repositories)
Create Package: controllers (inside main package)
– Create Class: MyController.java (inside package controllers)
application.properties
spring.datasource.url = jdbc:h2:mem:testdb
spring.h2.console.enabled = true
Author.java
package com.ivoronline.springboot_relationships_onetoone_jointable.entities;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.JoinTable;
import javax.persistence.OneToOne;
import javax.persistence.CascadeType;
@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
public String name;
public Integer age;
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "AUTHOR_ADDRESS")
public Address address;
}
Address.java
package com.ivoronline.springboot_relationships_onetoone_jointable.entities;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
public String city;
public String street;
}